﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using DAO;
using Domain;
using Microsoft.Practices.EnterpriseLibrary.Validation;

public partial class UsrAdminPanel : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            cargarDatos();
        }
    }

    private void cargarDatos()
    {
        Usuario u = (Usuario)Utils.operadorLogueado;
        lbl_dni.Text = u.UserName.ToString();
        txt_nombre.Text = u.Nombre;
        txt_apellido.Text = u.Apellido;
        txt_mail.Text = u.EMail;
        txt_pass.Text = u.Password;
        txt_pin.Text = u.PIN.HasValue ? u.PIN.Value.ToString() : string.Empty;
    }

    protected void btn_guardar_Click(object sender, EventArgs e)
    {
        ul_mensajes.InnerHtml = string.Empty;
        long dni = 0, pin = 0;

        if (!string.IsNullOrEmpty(txt_pin.Text) &&
           !long.TryParse(txt_pin.Text, out pin))
        {
            ul_mensajes.InnerHtml += "<li class='itemerror'>" + "El PIN especificado no es válido, debe ser de 5 dígitos" + "</li>";
            return;
        }

        Usuario u = new Usuario(Utils.operadorLogueado.UserName,
                                txt_pass.Text, 
                                txt_mail.Text,
                                txt_nombre.Text,
                                txt_apellido.Text,
                                string.IsNullOrEmpty(txt_pin.Text) ? (long?)null : pin,
                                ((Usuario)Utils.operadorLogueado).Asociaciones,
                                ((Usuario)Utils.operadorLogueado).Consumos);

        ValidationResults validaciones = Validation.Validate(u);
        if (validaciones.Count() != 0)
        {
            foreach (ValidationResult v in validaciones)
            {
                ul_mensajes.InnerHtml += "<li class='itemerror'>" + v.Message + "</li>";
            }

            return;
        }

        u.db4oid = Utils.operadorLogueado.db4oid;
        if (!UsuarioDAO.Guardar(u))
        {
            ul_mensajes.InnerHtml += "<li class='itemerror'>" + "Ocurrio un inconveniente. Intente nuevamente mas tarde" + "</li>";
            return;
        }
        Utils.operadorLogueado = u;

        ul_mensajes.InnerHtml += "<li class='itemok'>" + "Se guardaron los datos correctamente" + "</li>";
        cargarDatos();

    }
}
